﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.SqlClient;

using Padelcenter.Common;

namespace Padelcenter.DataAccess
{
    #region " SELECT " 
    #region "Tipo Producto"

    public class TipoProducto_Select : DataAccessBase
    {
        public TipoProducto_Select()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProducto_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProducto_Select_Prm tipoProducto_Select_Prm = new TipoProducto_Select_Prm(this.TipoProducto);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProducto_Select_Prm.Parameters);

            return ds;
        }

        private TipoProducto _tipoProducto;

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }
    }

    public class TipoProducto_Select_Prm
    {
        public TipoProducto_Select_Prm(TipoProducto tipoProducto)
        {
            this.TipoProducto = tipoProducto;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idTipoProductoPadre", this.TipoProducto.IdTipoProductoPadre),
                new SqlParameter( "@TipoProducto"       , this.TipoProducto.Descripcion),
                new SqlParameter( "@ConFiltroActivo"    , this.TipoProducto.ConFiltroActivo),
                new SqlParameter( "@Activo"             , this.TipoProducto.Activo)
            };

            this.Parameters = parameters;
        }

        private SqlParameter[] _parameters;
        private TipoProducto _tipoProducto;

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    
    #endregion

    #region "Tipo Producto Descripcion"
    public class TipoProductoDescripcion_Select : DataAccessBase
    { 
        public TipoProductoDescripcion_Select()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProductoDescripcion_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProductoDescripcion_Select_Prm tipoProductoDescripcion_Select_Prm = new TipoProductoDescripcion_Select_Prm(this.TipoProductoDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProductoDescripcion_Select_Prm.Parameters);

            return ds;
        }

        private TipoProductoDescripcion _tipoProductoDescripcion;

        public TipoProductoDescripcion TipoProductoDescripcion
        {
            get { return _tipoProductoDescripcion; }
            set { _tipoProductoDescripcion = value; }
        }
    }

    public class TipoProductoDescripcion_Select_Prm
    {
        public TipoProductoDescripcion_Select_Prm(TipoProductoDescripcion tipoProductoDescripcion) 
        {
            this.TipoProductoDescripcion = tipoProductoDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProductoDescripcion.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idIdioma"           , this.TipoProductoDescripcion.Idioma.IdIdioma)
            };

            this.Parameters = parameters;
        }

        private TipoProductoDescripcion _tipoProductoDescripcion;
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        public TipoProductoDescripcion TipoProductoDescripcion
        {
            get { return _tipoProductoDescripcion; }
            set { _tipoProductoDescripcion = value; }
        }
    }
    #endregion

    #region "TipoProducto TipoPropiedad"
    public class TipoProductoTipoPropiedad_Select : DataAccessBase
    {
        public TipoProductoTipoPropiedad_Select()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProductoTipoPropiedad_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProductoTipoPropiedad_Select_Prm tipoProductoTipoPropiedad_Select_Prm = new TipoProductoTipoPropiedad_Select_Prm(this.TipoProductoTipoPropiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProductoTipoPropiedad_Select_Prm.Parameters);

            return ds;
        }

        private TipoProductoTipoPropiedad _tipoProductoTipoPropiedad;

        public TipoProductoTipoPropiedad TipoProductoTipoPropiedad
        {
            get { return _tipoProductoTipoPropiedad; }
            set { _tipoProductoTipoPropiedad = value; }
        }
    }

    public class TipoProductoTipoPropiedad_Select_Prm
    {
        public TipoProductoTipoPropiedad_Select_Prm(TipoProductoTipoPropiedad tipoProductoTipoPropiedad)
        {
            this.TipoProductoTipoPropiedad = tipoProductoTipoPropiedad;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProductoTipoPropiedad.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idTipoPropiedad"    , this.TipoProductoTipoPropiedad.TipoPropiedad.IdTipoPropiedad)
            };

            this.Parameters = parameters;
        }

        private TipoProductoTipoPropiedad _tipoProductoTipoPropiedad;
        private SqlParameter[] _parameters;

        public TipoProductoTipoPropiedad TipoProductoTipoPropiedad
        {
            get { return _tipoProductoTipoPropiedad; }
            set { _tipoProductoTipoPropiedad = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion
    #endregion 

    #region " INSERT "
    #region "Tipo Producto"

    public class TipoProducto_Insert : DataAccessBase
    {
        public TipoProducto_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProducto_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProducto_Insert_Prm tipoProducto_Insert_Prm = new TipoProducto_Insert_Prm(this.TipoProducto);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProducto_Insert_Prm.Parameters);

            return ds;
        }

        private TipoProducto _tipoProducto;

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }
    }

    public class TipoProducto_Insert_Prm
    {
        public TipoProducto_Insert_Prm(TipoProducto tipoProducto)
        {
            this.TipoProducto = tipoProducto;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProductoPadre", this.TipoProducto.TipoProductoPadre.IdTipoProducto),
                new SqlParameter( "@TipoProducto"       , this.TipoProducto.Descripcion),
                new SqlParameter( "@Activo"             , this.TipoProducto.Activo),
                new SqlParameter( "@Orden"              , this.TipoProducto.Orden)
            };

            this.Parameters = parameters;
        }

        private SqlParameter[] _parameters;
        private TipoProducto _tipoProducto;

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }

    #endregion

    #region "Tipo Producto Descripcion"
    public class TipoProductoDescripcion_Insert : DataAccessBase
    {
        public TipoProductoDescripcion_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProductoDescripcion_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProductoDescripcion_Insert_Prm tipoProductoDescripcion_Insert_Prm = new TipoProductoDescripcion_Insert_Prm(this.TipoProductoDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProductoDescripcion_Insert_Prm.Parameters);

            return ds;
        }

        private TipoProductoDescripcion _tipoProductoDescripcion;

        public TipoProductoDescripcion TipoProductoDescripcion
        {
            get { return _tipoProductoDescripcion; }
            set { _tipoProductoDescripcion = value; }
        }
    }

    public class TipoProductoDescripcion_Insert_Prm
    {
        public TipoProductoDescripcion_Insert_Prm(TipoProductoDescripcion tipoProductoDescripcion)
        {
            this.TipoProductoDescripcion = tipoProductoDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProductoDescripcion.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idIdioma"           , this.TipoProductoDescripcion.Idioma.IdIdioma),
                new SqlParameter( "@Descripcion"        , this.TipoProductoDescripcion.Descripcion)
            };

            this.Parameters = parameters;
        }

        private TipoProductoDescripcion _tipoProductoDescripcion;
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        public TipoProductoDescripcion TipoProductoDescripcion
        {
            get { return _tipoProductoDescripcion; }
            set { _tipoProductoDescripcion = value; }
        }
    }
    #endregion

    #region "TipoProducto TipoPropiedad"
    public class TipoProductoTipoPropiedad_Insert : DataAccessBase
    {
        public TipoProductoTipoPropiedad_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProductoTipoPropiedad_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProductoTipoPropiedad_Insert_Prm tipoProductoTipoPropiedad_Insert_Prm = new TipoProductoTipoPropiedad_Insert_Prm(this.TipoProductoTipoPropiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProductoTipoPropiedad_Insert_Prm.Parameters);

            return ds;
        }

        private TipoProductoTipoPropiedad _tipoProductoTipoPropiedad;

        public TipoProductoTipoPropiedad TipoProductoTipoPropiedad
        {
            get { return _tipoProductoTipoPropiedad; }
            set { _tipoProductoTipoPropiedad = value; }
        }
    }

    public class TipoProductoTipoPropiedad_Insert_Prm
    {
        public TipoProductoTipoPropiedad_Insert_Prm(TipoProductoTipoPropiedad tipoProductoTipoPropiedad)
        {
            this.TipoProductoTipoPropiedad = tipoProductoTipoPropiedad;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProductoTipoPropiedad.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idTipoPropiedad"    , this.TipoProductoTipoPropiedad.TipoPropiedad.IdTipoPropiedad)
            };

            this.Parameters = parameters;
        }

        private TipoProductoTipoPropiedad _tipoProductoTipoPropiedad;
        private SqlParameter[] _parameters;

        public TipoProductoTipoPropiedad TipoProductoTipoPropiedad
        {
            get { return _tipoProductoTipoPropiedad; }
            set { _tipoProductoTipoPropiedad = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion
    #endregion

    #region " UPDATE "
    #region "Tipo Producto"

    public class TipoProducto_Update : DataAccessBase
    {
        public TipoProducto_Update()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProducto_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProducto_Update_Prm tipoProducto_Update_Prm = new TipoProducto_Update_Prm(this.TipoProducto);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProducto_Update_Prm.Parameters);

            return ds;
        }

        private TipoProducto _tipoProducto;

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }
    }

    public class TipoProducto_Update_Prm
    {
        public TipoProducto_Update_Prm(TipoProducto tipoProducto)
        {
            this.TipoProducto = tipoProducto;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idTipoProductoPadre", this.TipoProducto.IdTipoProductoPadre),
                new SqlParameter( "@TipoProducto"       , this.TipoProducto.Descripcion),
                new SqlParameter( "@Activo"             , this.TipoProducto.Activo),
                new SqlParameter( "@Orden"              , this.TipoProducto.Orden)
            };

            this.Parameters = parameters;
        }

        private SqlParameter[] _parameters;
        private TipoProducto _tipoProducto;

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }

    #endregion

    #region "Tipo Producto Descripcion"
    public class TipoProductoDescripcion_Update : DataAccessBase
    {
        public TipoProductoDescripcion_Update()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProductoDescripcion_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProductoDescripcion_Update_Prm tipoProductoDescripcion_Update_Prm = new TipoProductoDescripcion_Update_Prm(this.TipoProductoDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProductoDescripcion_Update_Prm.Parameters);

            return ds;
        }

        private TipoProductoDescripcion _tipoProductoDescripcion;

        public TipoProductoDescripcion TipoProductoDescripcion
        {
            get { return _tipoProductoDescripcion; }
            set { _tipoProductoDescripcion = value; }
        }
    }

    public class TipoProductoDescripcion_Update_Prm
    {
        public TipoProductoDescripcion_Update_Prm(TipoProductoDescripcion tipoProductoDescripcion)
        {
            this.TipoProductoDescripcion = tipoProductoDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProductoDescripcion.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idIdioma"           , this.TipoProductoDescripcion.Idioma.IdIdioma),
                new SqlParameter( "@Descripcion"        , this.TipoProductoDescripcion.Descripcion)
            };

            this.Parameters = parameters;
        }

        private TipoProductoDescripcion _tipoProductoDescripcion;
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        public TipoProductoDescripcion TipoProductoDescripcion
        {
            get { return _tipoProductoDescripcion; }
            set { _tipoProductoDescripcion = value; }
        }
    }
    #endregion
    #endregion

    #region " DELETE "
    #region "TipoProducto TipoPropiedad"
    public class TipoProductoTipoPropiedad_Delete : DataAccessBase
    {
        public TipoProductoTipoPropiedad_Delete()
        {
            StoredProcedureName = StoredProcedure.Name.TipoProductoTipoPropiedad_DELETE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            TipoProductoTipoPropiedad_Delete_Prm tipoProductoTipoPropiedad_Delete_Prm = new TipoProductoTipoPropiedad_Delete_Prm(this.TipoProductoTipoPropiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, tipoProductoTipoPropiedad_Delete_Prm.Parameters);

            return ds;
        }

        private TipoProductoTipoPropiedad _tipoProductoTipoPropiedad;

        public TipoProductoTipoPropiedad TipoProductoTipoPropiedad
        {
            get { return _tipoProductoTipoPropiedad; }
            set { _tipoProductoTipoPropiedad = value; }
        }
    }

    public class TipoProductoTipoPropiedad_Delete_Prm
    {
        public TipoProductoTipoPropiedad_Delete_Prm(TipoProductoTipoPropiedad tipoProductoTipoPropiedad)
        {
            this.TipoProductoTipoPropiedad = tipoProductoTipoPropiedad;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoProducto"     , this.TipoProductoTipoPropiedad.TipoProducto.IdTipoProducto),
                new SqlParameter( "@idTipoPropiedad"    , this.TipoProductoTipoPropiedad.TipoPropiedad.IdTipoPropiedad)
            };

            this.Parameters = parameters;
        }

        private TipoProductoTipoPropiedad _tipoProductoTipoPropiedad;
        private SqlParameter[] _parameters;

        public TipoProductoTipoPropiedad TipoProductoTipoPropiedad
        {
            get { return _tipoProductoTipoPropiedad; }
            set { _tipoProductoTipoPropiedad = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion
    #endregion
}
